package com.linzm.leetcode.primary.exercises3_20230122;

import java.util.Arrays;

/**
 * @Author zimingl
 * @Date 2023/1/25 19:24
 * @Description: 与对应负数同时存在的最大正整数
 */
public class Demo25_2441 {
    /**
     * 给你一个 不包含 任何零的整数数组 nums ，找出自身与对应的负数都在数组中存在的最大正整数 k 。
     * 返回正整数 k ，如果不存在这样的整数，返回 -1 。
     * 输入：nums = [-1,2,-3,3]
     * 输出：3
     * 解释：3 是数组中唯一一个满足题目要求的 k 。
     */
    public static void main(String[] args) {
        Demo25_2441 demo25_2441 = new Demo25_2441();
//        int[] nums = {-1,2,-3,3};
        int[] nums = {-1,-10,6,7,-7,1};
        int maxK = demo25_2441.findMaxK(nums);
        System.out.println(maxK);
    }

    private int findMaxK(int[] nums) {
        Arrays.sort(nums);
        for (int i = nums.length - 1, j = 0; i > j;) {
            if (nums[i] == - nums[j]) {
                return nums[i];
            }
            if (-nums[j] > nums[i]) {
                j++;
            }
            if (-nums[j] < nums[i]) {
                i--;
            }
        }
        return -1;
    }
}
